// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    // 如果是登录页面，初始化登录页面特定功能
    if (document.querySelector('.login-page')) {
        initLoginPage();
    }
});

// 初始化登录页面功能
function initLoginPage() {
    // 初始化表单验证
    initLoginFormValidation();

    // 清除旧的错误状态
    clearFormErrors();

    // 检查是否有已保存的用户名
    loadSavedEmail();

    // 绑定表单提交事件
    bindLoginFormSubmit();
}

// 加载已保存的邮箱
function loadSavedEmail() {
    const savedEmail = localStorage.getItem('savedEmail');
    const emailInput = document.getElementById('login-email');
    const rememberMeCheckbox = document.getElementById('remember-me');

    if (savedEmail && emailInput) {
        emailInput.value = savedEmail;
        if (rememberMeCheckbox) {
            rememberMeCheckbox.checked = true;
        }
    }
}

// 绑定登录表单提交事件
function bindLoginFormSubmit() {
    const loginForm = document.getElementById('login-form');
    if (loginForm) {
        loginForm.addEventListener('submit', async (e) => {
            e.preventDefault();
            await handleLogin();
        });
    }
}

// 初始化登录表单验证
function initLoginFormValidation() {
    // 为登录表单添加实时验证
    const loginEmail = document.getElementById('login-email');
    const loginPassword = document.getElementById('login-password');

    if (loginEmail) {
        loginEmail.addEventListener('input', function() {
            validateEmailField(this, 'login-email-error');
        });
    }

    if (loginPassword) {
        loginPassword.addEventListener('input', function() {
            validatePasswordField(this, 'login-password-error');
        });
    }
}

// 处理登录
async function handleLogin() {
    // 清除之前的错误状态
    clearFormErrors();

    // 验证表单
    if (!validateLoginForm()) {
        return;
    }

    // 准备登录数据
    const email = document.getElementById('login-email').value.trim();
    const password = document.getElementById('login-password').value;
    const rememberMeCheckbox = document.getElementById('remember-me');
    const rememberMe = rememberMeCheckbox ? rememberMeCheckbox.checked : false;

    const loginData = {
        email: email,
        password: password
    };

    // 获取登录按钮
    const loginButton = document.querySelector('#login-form .auth-btn');

    // 设置按钮加载状态
    setLoading(loginButton, true);

    try {
        // 发送登录请求
        const result = await apiRequest(API_CONFIG.LOGIN_ENDPOINT, {
            method: 'POST',
            body: loginData
        });

        if (result.success) {
            // 登录成功处理
            await handleLoginSuccess(result.data, email, rememberMe);
        } else {
            // 登录失败处理
            handleLoginFailure(result.error);
        }
    } catch (error) {
        // 网络或其他错误处理
        handleLoginFailure('登录失败，请检查网络连接');
    } finally {
        // 恢复按钮状态
        setLoading(loginButton, false);
    }
}

// 处理登录成功
async function handleLoginSuccess(responseData, email, rememberMe) {
    // 显示成功消息
    showMessage('登录成功！正在跳转...', 'success');

    // 保存用户数据和token
    if (responseData.token && responseData.user) {
        localStorage.setItem('userLoggedIn', 'true');
        localStorage.setItem('userEmail', email);
        localStorage.setItem('userType', responseData.user.role);
        localStorage.setItem('authToken', responseData.token);
        localStorage.setItem('user', JSON.stringify(responseData.user));
    }

    // 记住用户名
    if (rememberMe) {
        localStorage.setItem('savedEmail', email);
    } else {
        localStorage.removeItem('savedEmail');
    }

    // 延迟跳转，让用户看到成功消息
    setTimeout(() => {
        redirectAfterLogin(responseData.user);
    }, 1500);
}

// 处理登录失败
function handleLoginFailure(errorMessage) {
    showMessage(errorMessage || '登录失败，请检查邮箱和密码', 'danger');
}

// 登录成功后跳转
function redirectAfterLogin(user) {
    // 根据用户角色跳转到不同页面，或统一跳转到首页
    if (user && user.role === 'teacher') {
        window.location.href = '/dashboard.html'; // 教师仪表板
    } else {
        window.location.href = '/dashboard.html'; // 学生首页或通用首页
    }
}

// 验证登录表单
function validateLoginForm() {
    const emailInput = document.getElementById('login-email');
    const passwordInput = document.getElementById('login-password');

    let isValid = true;

    // 验证邮箱
    const email = emailInput.value.trim();
    if (!email) {
        showFieldError(emailInput, 'login-email-error', '邮箱不能为空');
        isValid = false;
    } else if (!validateEmail(email)) {
        showFieldError(emailInput, 'login-email-error', '请输入有效的邮箱地址');
        isValid = false;
    } else {
        hideFieldError(emailInput, 'login-email-error');
    }

    // 验证密码
    const password = passwordInput.value;
    if (!password) {
        showFieldError(passwordInput, 'login-password-error', '密码不能为空');
        isValid = false;
    } else {
        hideFieldError(passwordInput, 'login-password-error');
    }

    return isValid;
}

// 验证邮箱字段
function validateEmailField(inputElement, errorElementId) {
    const email = inputElement.value.trim();
    if (!email) {
        showFieldError(inputElement, errorElementId, '邮箱不能为空');
    } else if (!validateEmail(email)) {
        showFieldError(inputElement, errorElementId, '请输入有效的邮箱地址');
    } else {
        hideFieldError(inputElement, errorElementId);
    }
}

// 验证密码字段
function validatePasswordField(inputElement, errorElementId) {
    const password = inputElement.value;
    if (!password) {
        showFieldError(inputElement, errorElementId, '密码不能为空');
    } else {
        hideFieldError(inputElement, errorElementId);
    }
}